package com.tedu.api.list;

import org.junit.Test;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**链表实现集合   包位置：java.util
 * List接口集合---三个实现类：
 * ArrayList   实现类：数组实现
 *              特点：查询快【按照下标】、增删慢【改动下标：元素】
 *LinkedList   实现类：双向链表实现
 *               特点：查询慢【按照下标】、增删快【首、尾元素，中间元素】
 *  ArrayList与LinkedList大部分方法完全一致：
 *  添加 add（）获取 get（） 删除 remove（）
 *  size（）获取集合总数  clear（）清空集合元素
 *
 *  不一致方法：
 *  indexOf（） lastIndexOf
 *  addFirst()
 *  addLast()
 *  removeFrist()
 *  removeLast()
 */
public class LinkedListAPI {
    @Test
    public void testIndexOf(){
        //创建集合--双向链接集合
        List<String>list=new ArrayList<>();
        list.add("三吱");
        list.add("龙虎斗");
        list.add("螺蛳粉");
        list.add("庵汤");
        /**ArrayList与LinkedList通用方法
         * indexOf（）   返回值：int
         * 作用;返回指定元素在集合中第一次出现的索引位置
         *     【理解：返回元素的下标值】
         */
        int index=list.indexOf("庵汤");
        /**LinkedList独有方法
         * LastIndexOf（）  返回值：int
         * 作用：返回最后的元素在集合中出现的索引位置
         *
         */
        int lastIndex=list.lastIndexOf("庵汤");
        System.out.println("返回最后元素下标："+lastIndex);
    }
    /**
     *
     */
    @Test
    public void testAR(){
        //创建集合--双向链接集合
        List<String>list=new LinkedList<>();
        list.add("三吱");
        list.add("龙虎斗");
        list.add("螺蛳粉");
        list.add("庵汤");
        //LinkedList独有方法
        ((LinkedList)list).addFirst("榴莲");
        ((LinkedList)list).addLast("豆汁");
        System.out.println("双向链表："+list);
        ((LinkedList)list).removeFirst();
        System.out.println("双向链表："+list);
    }
}
